# -*- coding: utf-8 -*-
"""
DTM验证工具 - 命令行批量处理脚本
向后兼容的简化版本，替代原有的 dtm-advance.py
"""

import os
import sys

# 添加当前目录到模块搜索路径
current_dir = os.path.dirname(os.path.abspath(__file__))
if current_dir not in sys.path:
    sys.path.insert(0, current_dir)

try:
    from dtm_controller import DTMBatchProcessor
    from config_manager import ProjectConfig
except ImportError as e:
    print(f"模块导入失败: {e}")
    print("请确保所有模块文件存在且依赖包已安装")
    sys.exit(1)


def main():
    """主函数 - 向后兼容的配置方式"""

    # 项目路径配置
    PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
    INPUT_DIR = os.path.join(PROJECT_ROOT, "input")

    # 输入文件配置（与原有格式兼容）
    input_config = [
        {
            "file_path": os.path.join(
                INPUT_DIR, "厦门智欣建材集团有限公司（A1）原始数据.xlsx"
            ),
            "fixed_height": 11.49,  # 第一个文件的基准标高
        },
        {
            "file_path": os.path.join(
                INPUT_DIR, "厦门智欣建材集团有限公司（A2）原始数据.xlsx"
            ),
            "fixed_height": 11.57,  # 第二个文件的基准标高
        },
        # 可继续添加更多文件配置...
    ]

    print("DTM批量验证工具 - 命令行版本")
    print("=" * 40)

    # 检查输入文件
    valid_configs = []
    for config in input_config:
        file_path = config["file_path"]
        if os.path.exists(file_path):
            valid_configs.append(config)
            print(f"✓ 找到文件: {os.path.basename(file_path)}")
        else:
            print(f"✗ 文件不存在: {os.path.basename(file_path)}")

    if not valid_configs:
        print("\n错误: 没有找到有效的输入文件")
        print(f"请将Excel文件放在: {INPUT_DIR}")
        print("或修改 input_config 中的文件路径")
        sys.exit(1)

    print(f"\n准备处理 {len(valid_configs)} 个文件...")

    try:
        # 创建批量处理器
        processor = DTMBatchProcessor(valid_configs)

        # 执行处理
        result = processor.run_batch_processing()

        # 显示结果
        if result["success"]:
            print("\n" + "=" * 40)
            print("批量处理完成！")
            print("=" * 40)

            summary = result["summary"]
            print(f"处理结果:")
            print(f"  成功: {summary['successful_files']} 个文件")
            print(f"  失败: {summary['failed_files']} 个文件")
            print(f"  成功率: {summary['success_rate']:.1f}%")
            print(f"  总顶点数: {summary['total_vertices']}")
            print(f"  总三角形数: {summary['total_triangles']}")
            print(f"  总体积: {summary['total_volume']:.4f} 立方米")
            print(f"  总3D表面积: {summary['total_3d_area']:.4f} 平方米")
            print(f"  总投影面积: {summary['total_projection_area']:.4f} 平方米")

            if summary["failed_files"] > 0:
                print(f"\n失败的文件:")
                for filename in summary["failed_file_list"]:
                    print(f"  - {filename}")

            # 显示输出位置
            output_dir = processor.controller.get_output_directory()
            print(f"\n输出目录: {output_dir}")
            print(f"包含:")
            print(f"  - 三维可视化图像 (PNG)")
            print(f"  - 处理报告 (Excel)")
            print(f"  - 处理日志 (TXT)")

            # 询问是否打开输出目录
            try:
                response = input(f"\n是否打开输出目录? (y/N): ").strip().lower()
                if response in ["y", "yes", "是"]:
                    processor.controller.open_output_directory()
            except (KeyboardInterrupt, EOFError):
                pass

        else:
            print(f"\n批量处理失败: {result['error']}")

            # 显示日志信息
            if "log_messages" in result:
                print("\n错误详情:")
                for log_msg in result["log_messages"][-10:]:  # 显示最后10条日志
                    print(f"  {log_msg}")

            sys.exit(1)

    except KeyboardInterrupt:
        print("\n\n处理被用户中断")
        sys.exit(0)
    except Exception as e:
        print(f"\n处理过程中发生错误: {e}")
        import traceback

        traceback.print_exc()
        sys.exit(1)


if __name__ == "__main__":
    main()
